package com.xbongbong.saas.service;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.pojo.dto.FormDataAddDTO;
import com.xbongbong.paas.pojo.dto.FormDataAddGetDTO;
import com.xbongbong.paas.pojo.dto.FormDataGetDTO;
import com.xbongbong.paas.pojo.dto.FormDataListDTO;
import com.xbongbong.paas.pojo.dto.FormDataUpdateGetDTO;
import com.xbongbong.paas.pojo.dto.OuterLinkAddDTO;
import com.xbongbong.paas.pojo.dto.OuterLinkAddGetDTO;
import com.xbongbong.paas.pojo.vo.FormDataAddGetVO;
import com.xbongbong.paas.pojo.vo.FormDataAddVO;
import com.xbongbong.paas.pojo.vo.FormDataGetVO;
import com.xbongbong.paas.pojo.vo.FormDataUpdateGetVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.workorder.pojo.dto.WorkOrderDataDetailDTO;
import com.xbongbong.pro.workorder.pojo.dto.WorkOrderMyPendingDTO;
import com.xbongbong.pro.workorder.pojo.dto.WorkOrderProgressDTO;
import com.xbongbong.pro.workorder.pojo.vo.WorkOrderDataDetailVO;
import com.xbongbong.pro.workorder.pojo.vo.WorkOrderDataEsListVO;
import com.xbongbong.pro.workorder.pojo.vo.WorkOrderMyPendingVO;
import com.xbongbong.pro.workorder.pojo.vo.WorkOrderProcessVO;

/**
 *
 * @author 魏荣杰
 * @date 2019/3/20 10:51
 * @since v1.0
 * @version v1.0
 */
public interface WorkOrderFormDataService {

    /**
     * Description: 在新建时，返回初始化字段属性和数据（流水号等）
     * @param formDataAddGetDTO
     * @return com.xbongbong.paas.pojo.vo.FormDataAddGetVO
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/3/20 13:56
     * @since v1.0
     */
    FormDataAddGetVO addGet(FormDataAddGetDTO formDataAddGetDTO) throws XbbException;

    /**
     * Description: 外链在新建时，返回初始化字段属性和数据（流水号等）
     * @param outerLinkAddGetDTO
     * @return com.xbongbong.paas.pojo.vo.FormDataAddGetVO
     * @throws XbbException XbbException
     * @author 曹远远
     * @date
     * @since v1.0
     */
    FormDataAddGetVO addGetForOutLink(OuterLinkAddGetDTO outerLinkAddGetDTO) throws XbbException;

    /**
     * Description: 工单保存
     * @param formDataAddDTO
     * @return com.xbongbong.paas.pojo.vo.FormDataAddVO
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/4/11 20:31
     * @since v1.0
     */
    FormDataAddVO add(FormDataAddDTO formDataAddDTO) throws XbbException;

    /**
     * Description: 工单保存
     * @param
     * @return com.xbongbong.paas.pojo.vo.FormDataAddVO
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/4/11 20:31
     * @since v1.0
     */
    FormDataAddVO addForOutLink(OuterLinkAddDTO outerLinkAddDTO) throws XbbException;


    /**
     * Description: 在更新时，返回标签字段属性和属性，权限等相关信息
     * @param formDataUpdateGetDTO
     * @return com.xbongbong.paas.pojo.vo.FormDataUpdateGetVO
     * @throws XbbException XbbException
     * @author 魏荣杰
     * @date 2019/4/18 15:31
     * @since v1.0
     */
    FormDataUpdateGetVO updateGet(FormDataUpdateGetDTO formDataUpdateGetDTO) throws XbbException;


    /**
     * Description: 工单基本信息
     * @param workOrderDataDetailDTO
     * @return WorkOrderDataDetailVO
     * @throws XbbException
     * @author 刘阳
     * @date 2019/4/16 2:44 PM
     * @since v1.0
     */
    WorkOrderDataDetailVO getDetail(WorkOrderDataDetailDTO workOrderDataDetailDTO) throws XbbException;

    /**
     * Description: 工单内容详情
     *
     *
     * @param formDataGetDTO@throws XbbException
     * @author 刘阳
     * @date 2019/4/16 3:07 PM
     * @since v1.0
     */
    FormDataGetVO get(FormDataGetDTO formDataGetDTO) throws XbbException;

    /**
     * 列表
     * @param formDataListDTO
     * @return
     */
    WorkOrderDataEsListVO list(FormDataListDTO formDataListDTO) throws XbbException;

    /**
     * es查询应用下的某个表单数据列表（导出专用）
     * @param formDataListDTO
     * @return 表单数据列表
     * @throws XbbException
     */
    WorkOrderDataEsListVO listByEsForExport(FormDataListDTO formDataListDTO) throws XbbException;

    /**
     * 抢单
     * @param formDataListDTO
     * @return
     */
    WorkOrderDataEsListVO robList(FormDataListDTO formDataListDTO) throws XbbException;

    /**
     * 抢单
     * @param formDataListDTO
     * @return
     */
    WorkOrderDataEsListVO normalList(FormDataListDTO formDataListDTO) throws XbbException;

    /**
     * 工单进展
     * @param workOrderProgressDTO
     * @return
     */
    WorkOrderProcessVO progress(WorkOrderProgressDTO workOrderProgressDTO) throws XbbException;

    /**
     * Description: 首页获取待我处理（待接收和进行中）的工单列表卡片
     * @param workOrderMyPendingDTO
     * @return WorkOrderMyPendingVO
     * @throws XbbException
     * @author 刘阳
     * @date 2019/5/28 4:24 PM
     * @since v1.0
     */
    WorkOrderMyPendingVO getMyPendingWorkOrderList(WorkOrderMyPendingDTO workOrderMyPendingDTO) throws XbbException;


    /**
     * 获取工单打印相关的数据
     * @param formDataGetDTO
     * @return
     * @throws XbbException
     */
    JSONObject getPrintRelationData(FormDataGetDTO formDataGetDTO) throws XbbException;
}
